<?php defined('BASEPATH') OR exit('No direct script access allowed');

/**
 * Usuarios_model
 * @author Thiago Braga <thiago@sitesg.com.br>
 * @access protected
 * @version 1.0
 */
class Usuarios_model extends CI_Model {

  /**
   * Seleciona todos usuários da tabela
   * @return object
   */
  public function select_usuarios($id = false) {
    return $id ?
      $this->db->query("
        SELECT
          u.id,
          u.nome,
          u.login,
          u.email,
          u.titulo,
          u.oab,
          u.info,
          u.producoes,
          GROUP_CONCAT(g.nome ORDER BY g.nome) AS grupo
        FROM
          usuarios u
        INNER JOIN
          usuarios_grupos ug ON ug.usuario = u.id
        INNER JOIN
          grupos g ON g.id = ug.grupo
        WHERE
          MD5(CONCAT('MB', u.id, 'SG')) = '".$id."'
        GROUP BY
          u.id
        LIMIT 1;")->row() :

      $this->db->query("
        SELECT
          u.id,
          u.nome,
          u.login,
          GROUP_CONCAT(g.nome) AS grupo
        FROM
          usuarios u
        INNER JOIN
          usuarios_grupos ug ON ug.usuario = u.id
        INNER JOIN
          grupos g ON g.id = ug.grupo
        WHERE
          ug.grupo <> 1
        GROUP BY
          u.id;")->result();
  }

  /**
   * Verifica se existe um usuário com o CPF informado
   * @param string $cpf CPF a ser verificado
   */
  public function check_cpf($cpf) {
    return $this->db->query("
      SELECT
        login
      FROM
        usuarios
      WHERE
        login = '".$cpf."'
      LIMIT 1;")->row();
  }

  /**
   * Atualiza a senha do usuário.
   * @param int $id ID do usuário.
   * @param string $password Nova senha do usuário.
   */
  public function update_password($id, $password) {
    return $this->db->query("
      UPDATE
        usuarios
      SET
        senha = MD5(CONCAT('MB', '".$password."', 'SG'))
      WHERE
        id = '".$id."';");
  }

  /**
   * Salva os dados do usuario
   * @param object $data Dados do usuário
   * @return object
   */
  public function save($data) {
    extract($data);
    $date = date('Y-m-d H:m:s');
    if (preg_match("/Advogados/", $grupo)) {
      $this->db->query("
        INSERT INTO
          usuarios
        VALUES
          (NULL,
          '".$nome."',
          MD5(CONCAT('MB', '".$senha."', 'SG')),
          '".$cpf."',
          '".$email."',
          '".$url."',
          '".$titulo."',
          '".$oab."',
          '".$info."',
          '".$telefone."',
          '".$foto."',
          '".$producoes."',
          '".$date."',
          '".$date."',
          'A');");
    } else {
      $this->db->query("
        INSERT INTO
          usuarios
          (id,
          nome,
          senha,
          login,
          email,
          criado_em,
          editado_em,
          situacao)
        VALUES
          (NULL,
          '".$nome."',
          MD5(CONCAT('MB', '".$senha."', 'SG')),
          '".$cpf."',
          '".$email."',
          '".$date."',
          '".$date."',
          'A');");
    }
    if ($this->db->affected_rows()) {
      $this->db->query("
        INSERT INTO
          usuarios_grupos
        VALUES
          (NULL,
          LAST_INSERT_ID(),
          ".$grupo_id.");");
      return TRUE;
    } else {
      return FALSE;
    }
  }

  /**
   * Efetua o login do usuário
   * @return object|boolean
   */
  public function login($login, $password) {
    $query = $this->db->query("
      SELECT
        u.id,
        u.nome,
        g.nome AS grupo,
        g.id AS grupo_id
      FROM
        usuarios u
      INNER JOIN
        usuarios_grupos ug ON ug.usuario = u.id
      INNER JOIN
        grupos g ON g.id = ug.grupo
      WHERE
        u.login = '".$login."'
        AND u.senha = MD5(CONCAT('MB', '".$password."', 'SG'))
      LIMIT 1;")->row();
    return $query ? $query : NULL;
  }

  /**
   * [check_permission description]
   * @return [type] [description]
   */
  public function check_permission($modulo) {
    print_r($modulo);
    $this->db->query("
      SELECT
        p.grupo
      FROM
        permissoes p
      WHERE
        modulo = '".$modulo."';");
  }

}

/* End of file usuarios_model.php */
/* Location: ./application/models/usuarios_model.php */